Desktop/Copy of GPS_TRACE/SRC/RS232.c

Go to the documentation of this file.
00001 #include <avr/io.h>
00002 #include "RS232.h"
00003 
00004 #define F_OSC 4000000   /* oscillator-frequency in Hz */
00005 #define UART_BAUD_RATE 4800                     /* baudrate */
00006 #define UART_BAUD_CALC(UART_BAUD_RATE,F_OSC) ((F_OSC)/((UART_BAUD_RATE)*16l)-1)
00007 
00008 void uart0_init(char *s)
00009 {
00010    // set baud rate
00011    UBRR0H = (uint8_t)(UART_BAUD_CALC(UART_BAUD_RATE,F_OSC)>>8);
00012    UBRR0L = (uint8_t)UART_BAUD_CALC(UART_BAUD_RATE,F_OSC);
00013 
00014    // Enable receiver and transmitter; enable RX interrupt
00015    UCSR0B = (1 << RXEN0) | (1 << TXEN0) | (1 << RXCIE0);
00016 
00017    //asynchronous 8N1
00018    UCSR0C = (1 << URSEL0) | (3 << UCSZ00);
00019 }
00020 
00021 void uart0_putc(unsigned char c)
00022 {
00023    // wait until UDR ready
00024    while(!(UCSR0A & (1 << UDRE0)));
00025    UDR0 = c;    // send character
00026 }
00027 
00028 void uart0_puts(char *s)
00029 {
00030    while (*s) {
00031       uart0_putc(*s);
00032       s++;
00033    }
00034 }
00035 
00036 void uart0_send_initial_char()
00037 {
00038         while(!(UCSR0A & (1 << UDRE0)));
00039                 UDR0 = 0x43; // "C"
00040         while(!(UCSR0A & (1 << UDRE0)));
00041                 UDR0= 0x0d;
00042 }
00043 
00044 void uart1_init()
00045 {
00046  // set baud rate
00047    UBRR1H = (uint8_t)(UART_BAUD_CALC(UART_BAUD_RATE,F_OSC)>>8);
00048    UBRR1L = (uint8_t)UART_BAUD_CALC(UART_BAUD_RATE,F_OSC);
00049 
00050    // Enable receiver and transmitter; enable RX interrupt
00051    UCSR1B = (1 << RXEN1) | (1 << TXEN1) | (1 << RXCIE1);
00052 
00053    //asynchronous 8N1
00054    UCSR1C = (1 << URSEL1) | (3 << UCSZ10);
00055 }
00056 
00057 void uart1_putc(unsigned char c)
00058 {
00059    // wait until UDR ready
00060    while(!(UCSR1A & (1 << UDRE1)));
00061    UDR1 = c;    // send character
00062 }
00063 
00064 void uart1_puts(char *s)
00065 {
00066    //  loop until *s != NULL
00067    while (*s) {
00068       uart1_putc(*s);
00069       s++;
00070    }
00071 }
00072 
00073 void uart1_send_initial_char()
00074 {
00075    while(!(UCSR1A & (1 << UDRE1)));
00076         UDR1 = 0x43; // "C"
00077    while(!(UCSR1A & (1 << UDRE1)));
00078         UDR1 = 0x0d;
00079 }

Generated on Fri Aug 17 13:50:54 2007 for GPS TRACE by  doxygen 1.5.3